import { useEffect, useState } from 'react';
// http://localhost:3001/fruits?name=&personId=2

// 清空name=''的对象
const isFalsy = (value) => value === 0 ? false: !value;
export const cleanObject = (object) => {
  // Object.assign({}, object);
  const result = {...object};  // 在一个函数里不要直接改变对象
  Object.keys(result).forEach(key => {
    const value = object[key];
    if(isFalsy(value)) {
      delete result[key]
    }
  })
  return result;
}

// 自定义custom Hook，方便useEffect数据请求
export const useMount = (callback) => {
  useEffect(() => {
    callback();
  }, [])
}

// 自定义Hook-debounce 防抖函数
export const useDebounce = (value, delay) => {
  const [debounceValue, setDebounceValue] = useState(value);
  useEffect(()=> {
    // 每次在value变化后，设置一个定时器
    const timeout = setTimeout(()=> {
      setDebounceValue(value);
    }, delay)
    // 每次在上一个useEffect处理完以后再运行,只有最后一个会留存下来
    return () => clearTimeout(timeout);
  }, [value, delay])
  return debounceValue;
}